@echo off
chcp 65001 >nul 2>&1
echo.
echo ████████████████████████████████████████████████████████████
echo █  🧪 APP 完整测试工具                                     █
echo █  患者管理系统实时通信测试                               █
echo ████████████████████████████████████████████████████████████
echo.

echo 📋 测试准备阶段...
echo.

:: 配置临时环境变量
echo [1/6] 配置环境变量...
set "JAVA_HOME=D:\JAVA"
set "PATH=%PATH%;D:\JAVA\bin"

:: 检查Python
if exist "C:\Python313\python.exe" (
    set "PATH=%PATH%;C:\Python313;C:\Python313\Scripts"
    echo ✅ Python 3.13 已配置
) else if exist "C:\Python312\python.exe" (
    set "PATH=%PATH%;C:\Python312;C:\Python312\Scripts"
    echo ✅ Python 3.12 已配置
) else (
    echo ❌ 未找到Python，请先安装Python
    pause
    exit /b 1
)

:: 验证环境
echo [2/6] 验证环境...
java -version >nul 2>&1
if %errorlevel% equ 0 (
    echo ✅ Java环境正常
) else (
    echo ❌ Java环境异常
    pause
    exit /b 1
)

python --version >nul 2>&1
if %errorlevel% equ 0 (
    echo ✅ Python环境正常
) else (
    echo ❌ Python环境异常
    pause
    exit /b 1
)

:: 检查APK文件
echo [3/6] 检查APK文件...
if exist "app\release\app-release.apk" (
    echo ✅ 发现APK文件: app\release\app-release.apk
    for %%I in (app\release\app-release.apk) do echo    文件大小: %%~zI 字节
) else (
    echo ❌ 未找到APK文件
    echo 💡 请先在Android Studio中构建项目
    pause
    exit /b 1
)

:: 启动WebSocket服务器
echo [4/6] 启动WebSocket服务器...
echo.
echo 🚀 正在启动WebSocket服务器...
echo 📍 服务器地址: ws://172.20.0.88:8080
echo 🌐 本地地址: ws://localhost:8080
echo.

:: 检查端口占用
netstat -an | findstr :8080 >nul
if %errorlevel% equ 0 (
    echo ⚠️  端口8080已被占用，正在停止占用进程...
    for /f "tokens=5" %%a in ('netstat -ano ^| findstr :8080') do (
        taskkill /PID %%a /F >nul 2>&1
    )
    timeout /t 2 >nul
)

:: 后台启动服务器
start "WebSocket Server" /min python simple_python_server.py

:: 等待服务器启动
echo 等待服务器启动...
timeout /t 3 >nul

:: 验证服务器
netstat -an | findstr :8080 >nul
if %errorlevel% equ 0 (
    echo ✅ WebSocket服务器启动成功
) else (
    echo ❌ WebSocket服务器启动失败
    echo 💡 请检查Python环境和防火墙设置
    pause
    exit /b 1
)

:: 设备连接测试
echo [5/6] 设备连接测试...
echo.
echo 请选择测试方式：
echo [1] 🔌 真机设备测试 (推荐)
echo [2] 📱 模拟器测试
echo [3] 📋 仅安装APK到已连接设备
echo [4] 🛠️  手动安装 (跳过自动安装)
echo.
set /p test_choice=请选择测试方式 (1-4): 

if "%test_choice%"=="1" goto real_device_test
if "%test_choice%"=="2" goto emulator_test
if "%test_choice%"=="3" goto install_apk
if "%test_choice%"=="4" goto manual_install
goto real_device_test

:real_device_test
echo.
echo 🔌 真机设备测试...
echo.
echo 📋 真机连接步骤：
echo 1. 用USB线连接手机到电脑
echo 2. 手机开启"开发者选项"和"USB调试"
echo 3. 允许计算机进行USB调试
echo.
echo 正在检测设备...

:: 查找adb
set ADB_FOUND=0
if exist "C:\Users\%USERNAME%\AppData\Local\Android\Sdk\platform-tools\adb.exe" (
    set "ADB_PATH=C:\Users\%USERNAME%\AppData\Local\Android\Sdk\platform-tools\adb.exe"
    set ADB_FOUND=1
) else if exist "C:\Android\Sdk\platform-tools\adb.exe" (
    set "ADB_PATH=C:\Android\Sdk\platform-tools\adb.exe"
    set ADB_FOUND=1
)

if %ADB_FOUND%==0 (
    echo ❌ 未找到ADB工具
    echo 💡 请先在Android Studio中安装Android SDK
    goto manual_install
)

"%ADB_PATH%" devices
echo.
echo 如果看到设备列表，请按任意键继续安装APK...
pause >nul

"%ADB_PATH%" install -r "app\release\app-release.apk"
if %errorlevel% equ 0 (
    echo ✅ APK安装成功！
) else (
    echo ❌ APK安装失败
    echo 💡 请检查设备连接和USB调试设置
)
goto test_connection

:emulator_test
echo.
echo 📱 模拟器测试...
echo ❌ 模拟器功能暂未实现
echo 💡 请使用真机设备测试或手动安装
goto manual_install

:install_apk
echo.
echo 📋 正在安装APK到已连接设备...
if %ADB_FOUND%==1 (
    "%ADB_PATH%" install -r "app\release\app-release.apk"
) else (
    echo ❌ 未找到ADB工具
)
goto test_connection

:manual_install
echo.
echo 🛠️  手动安装指南：
echo.
echo 📋 安装步骤：
echo 1. 将 app\release\app-release.apk 复制到手机
echo 2. 在手机上点击APK文件
echo 3. 允许安装未知来源应用
echo 4. 按照提示完成安装
echo.
echo 📱 或者使用ADB命令：
echo    adb install -r app\release\app-release.apk
echo.
pause

:test_connection
echo [6/6] 连接测试...
echo.
echo ========================================
echo 🧪 APP测试完成！
echo ========================================
echo.
echo 📊 测试结果：
echo ✅ WebSocket服务器: 运行中 (ws://172.20.0.88:8080)
echo ✅ APK文件: 已准备就绪
echo ✅ 安装: 已完成 (或需要手动安装)
echo.
echo 🔍 现在请测试以下功能：
echo.
echo 1. 📱 打开"患者管理系统"APP
echo 2. 🔑 使用任意账号登录
echo 3. ➕ 点击"添加患者"按钮
echo 4. 📝 填写患者信息并提交
echo 5. 🔄 检查是否显示"连接成功"
echo 6. 💬 验证实时通信功能
echo.
echo 📞 如果遇到问题：
echo - "连接出错，正在重试" → 检查WiFi网络
echo - "无法登录" → 检查服务器状态
echo - "应用崩溃" → 查看日志信息
echo.
echo ⏹️  按任意键关闭WebSocket服务器...
pause >nul

:: 关闭服务器
tasklist | findstr python >nul
if %errorlevel% equ 0 (
    taskkill /im python.exe /f >nul 2>&1
    echo 🛑 WebSocket服务器已关闭
)

echo.
echo �� 测试完成，感谢使用！
pause 